// 页面名单配置
import router from "@/router/index";
import { tc } from "@/locales/index";
import { useUser } from "@/store/modules/userInfo";
import { ldShow, ldHide } from "@/utils/loding";
export const whiteList: any = [
  //拦截名单  如果用户未登录就返回登录页面
  "/dashBoard",
  "/lowCode",
  "/about",
  "/home",
  "/home/details",
  "/user",
  "/agreement",
];
export const doNotInterceptList: any = [
  //不拦截名单
  "/login",
  "/404",
];
router.beforeEach((to, _, next) => {
  ldShow();
  // console.log(to, from, next);
  // 设置页面标题
  if (to.meta && typeof to.meta.title === "string") {
    document.title = tc("项目名称") + "-" + to.meta.title;
  } else {
    document.title = tc("项目名称") + "-" + tc("默认标题");
  }

  // 如果是不需要拦截的路由，直接放行
  if (doNotInterceptList.includes(to.fullPath)) {
    return next();
  }

  const { token } = useUser();

  // 如果用户未登录且当前路由需要登录权限，重定向到登录页
  if (!token && whiteList.includes(to.fullPath)) {
    return next("/login");
  }

  // 如果用户已登录但没有访问权限，重定向到 404 页面
  if (token && !whiteList.includes(to.fullPath)) {
    return next("/404");
  }

  // 其他情况，放行
  next();

  // 滚动给最顶层
  window.scrollTo(0, 0);
});
// 在同文件中或合适的配置文件内添加afterEach钩子
router.afterEach(() => {
  // 确保所有异步操作完成，页面跳转成功后隐藏loading
  ldHide();
});
